
    ClassPath.implement
    (
        {
            /**
             * Resolve the path to a class against this classpath
             * 
             * @param {String} canonicalName
             * @return {String} The path to the class
             */
            resolve: function (canonicalName) 
            {
                return this.classpath + '/' + canonicalName.replace(/\./g, '/') + '.js';
            }
            
            /**
             * @return {String}
             * @override
             */
        ,   valueOf: function () 
            {
                return this.classpath;
            }
            
            /**
             * @return {String}
             * @override
             */
        ,   toString: function () 
            {
                return this.valueOf();
            }
        }
    );
    
    /**
     * A value object representing a class path
     * @param {String} classpath
     * @constructor
     */
    function ClassPath (classpath) 
    {
        if (!String.is(classpath)) 
            throw new TypeError ('Invalid classpath');

        if ('/' === classpath.charAt(classpath.length-1))
            classpath= classpath.substr(0, classpath.length-1);
            
        this.classpath= classpath;
    };
